/*
 * EXP_LOGIC.java
 *
 * Created on 2 de Mar�o de 2009, 16:51
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package compilador.analisadorSintatico.operacoes;

import compilador.analisadorLexico.Token;
import compilador.analisadorLexico.TokenClass;
import compilador.analisadorSintatico.Producao;
import compilador.analisadorSintatico.TokenReader;
import compilador.analisadorSintatico.simboloGramatical.NaoTerminal;
import compilador.analisadorSintatico.simboloGramatical.SimboloGramatical;

/**
 *
 * @author Joaquim Ranyere
 */
// DEPRECIADA
public class EXP_LOGIC extends Producao {
    
    /** Creates a new instance of EXP_LOGIC */
    public EXP_LOGIC() {
    }
    
    @Override
    public void setSimbolo() {
        this.simbolo = new NaoTerminal(this.getClass().getSimpleName());
    }
    
    public SimboloGramatical derivar() throws Exception {
        TokenReader tokenReader = TokenReader.getInstance();
        
        Token token = null;
        
        token = tokenReader.seeCurrent();
        
        // primeiro lado da deriva��o
        ((NaoTerminal)  this.simbolo).add(new EXP_LOGIC_AND().derivar());
        
        if (isOR(tokenReader.seeCurrent())){
            // olha se � uma rela��o atra�s do operador relacional:
            ((NaoTerminal)  this.simbolo).add(new OP_OR().derivar());
            
            // segundo lado da deriva��o
            ((NaoTerminal)  this.simbolo).add(new EXP_LOGIC_AND().derivar());
        }
         
        return ((NaoTerminal) this.simbolo);
    }
    
    
    
    public boolean isOR(Token t){
        
        if(t.getTokenClass().equals(TokenClass.OPERADOR) && t.getAtributo().equals("||")) {
            return true;
        } else {
            return false;
        }
        
    }
    
}
